// m

// 给定一个单链表L的头节点head， 0,1,2,3,4.....n-1,n
// 要求将单链表重新排列，0,n,1,n-1,2,n-2.....

// 思路： 链表不能像数组那样直接进行随机访问，所以我们可以先将链表转为线性表，然后直接按照要求的排列顺序访问对应的数据元素，重新建立链表
const { ListNode, LinkedList } = require('../../1. 链表基础/1. 建立线性链表')

function reorderList(head) {
    if (!head) {
        return null
    }
    let vec = []
    let node = head
    while (node) {
        vec.push(node)
        node = node.next
    }

    let left = 0
    let right = vec.length - 1
    while (left < right) {
        vec[left].next = vec[right]
        left += 1
        if (left === right) {
            break
        }
        vec[right].next = vec[left]
        right -= 1
    }
    vec[left].next = null
}
let node = new LinkedList([1,2,3,4,5,6])
reorderList(node.head)
console.log(node.head)